Crate ittapi_rs[][src]

Re-exports

pub use self::__itt_suppress_mode as __itt_suppress_mode_t;
pub use self::___itt_track_group_type as __itt_track_group_type;
pub use self::___itt_track_type as __itt_track_type;
pub use self::iJIT_jvm_event as iJIT_JVM_EVENT;
pub use self::_iJIT_IsProfilingActiveFlags as iJIT_IsProfilingActiveFlags;
pub use self::_iJIT_CodeArchitecture as iJIT_CodeArchitecture;
pub use self::_iJIT_SegmentType as iJIT_SegmentType;

Structs

@brief Description of a single entry in the line number information of a code region. @details A table of line number entries gives information about how the reported code region is mapped to source file. Intel(R) VTune(TM) Amplifier uses line number information to attribute the samples (virtual address) to a line number. \n It is acceptable to report different code addresses for the same source line: @code Offset LineNumber 1 2 12 4 15 2 18 1 21 30

@brief Description of an inline JIT-compiled method @details When you use the_iJIT_Method_Inline_Load structure to describe the JIT compiled method, use iJVM_EVENT_TYPE_METHOD_INLINE_LOAD_FINISHED as an event type to report it.

@brief Description of a JIT-compiled method @details When you use the iJIT_Method_Load structure to describe the JIT compiled method, use iJVM_EVENT_TYPE_METHOD_LOAD_FINISHED as an event type to report it.

@brief Description of a JIT-compiled method @details When you use the iJIT_Method_Load_V2 structure to describe the JIT compiled method, use iJVM_EVENT_TYPE_METHOD_LOAD_FINISHED_V2 as an event type to report it.

@brief Description of a JIT-compiled method @details The iJIT_Method_Load_V3 structure is the same as iJIT_Method_Load_V2 with a newly introduced ‘arch’ field that specifies architecture of the code region. When you use the iJIT_Method_Load_V3 structure to describe the JIT compiled method, use iJVM_EVENT_TYPE_METHOD_LOAD_FINISHED_V3 as an event type to report it.

@brief Description of a dynamic update of the content within JIT-compiled method @details The JIT engine may generate the methods that are updated at runtime partially by mixed (data + executable code) content. When you use the iJIT_Method_Update structure to describe the update of the content within a JIT-compiled method, use iJVM_EVENT_TYPE_METHOD_UPDATE_V2 as an event type to report it.

Constants

< SIgned 64-bit floating-point

< Signed 32-bit floating-point

< Unsigned 16-bit integer

< Unsigned 32-bit integer

< Unsigned 64-bit integer

< “A is child of B” means that A was created by B (inverse of is_parent_of)

< “A is continuation of B” means that A assumes the dependencies of B

< “A is continued by B” means that B assumes the dependencies of A (inverse of is_continuation_of)

< “A is dependent on B” means that A cannot start until B completes

< “A is parent of B” means that A created B

< “A is predecessor to B” means that B cannot start until A completes (inverse of is_dependent_on)

< “A is sibling of B” means that A and B were created as a group

<\brief 32-bit machine code.

<\brief 64-bit machine code.

<\brief Native to the process architecture that is calling it.

<\brief The agent is not running; iJIT_NotifyEvent calls will not be processed.

<\brief The agent is running and ready to process notifications.

<\brief Executable code.

<\brief Data (not executable code). VTune Amplifier uses the format string (see iJIT_Method_Update) to represent this data in the VTune Amplifier GUI

<\brief Use the previous markup for the trace. Can be used for the following iJVM_EVENT_TYPE_METHOD_UPDATE_V2 events, if the type of the previously reported segment type is the same.

<\brief Send when an inline dynamic code is JIT compiled and loaded into memory by the JIT engine, but before the parent code region starts executing. Use iJIT_Method_Inline_Load as event data.

<\brief Send when dynamic code is JIT compiled and loaded into memory by the JIT engine, but before the code is executed. Use iJIT_Method_Load as event data.

<\brief Send when a dynamic code is JIT compiled and loaded into memory by the JIT engine, but before the code is executed. Use iJIT_Method_Load_V2 as event data.

<\brief Send when a dynamic code is JIT compiled and loaded into memory by the JIT engine, but before the code is executed. Use iJIT_Method_Load_V3 as event data.

<\brief Send when compiled dynamic code is being unloaded from memory. Use iJIT_Method_Load as event data.

<\brief Send to provide new content for a previously reported dynamic code. The previous content will be invalidated starting from the time of the notification. Use iJIT_Method_Load as event data but required fields are following:

@cond exclude_from_documentation

<\brief Send this to shutdown the agent. Use NULL for event data.

Statics

Functions

@ingroup clockdomains @brief Create a clock domain. Certain applications require the capability to trace their application using a clock domain different than the CPU, for instance the instrumentation of events that occur on a GPU. Because the set of domains is expected to be static over the application’s execution time, there is no mechanism to destroy a domain. Any domain can be accessed by any thread in the process, regardless of which thread created the domain. This call is thread-safe. @param[in] fn A pointer to a callback function which retrieves alternative CPU timestamps @param[in] fn_data Argument for a callback function; may be NULL

@ingroup clockdomains @brief Recalculate clock domains frequencies and clock base timestamps.

@brief Decrement the unsigned 64 bits integer counter value

@endcond */ @brief Decrement the unsigned 64 bits integer counter value with x

@ingroup counters @brief Decrement a counter by the value specified in delta. @param[in] domain The domain controlling the call. Counter names are not domain specific. The domain argument is used only to enable or disable the API calls. @param[in] name The name of the counter @param[in] delta The amount by which to decrement the counter

@ingroup counters @brief Decrement a counter by one. The first call with a given name creates a counter by that name and sets its value to zero. Successive calls decrement the counter value. @param[in] domain The domain controlling the call. Counter names are not domain specific. The domain argument is used only to enable or disable the API calls. @param[in] name The name of the counter

@brief Destroy the counter identified by the pointer previously returned by __itt_counter_create() or __itt_counter_create_typed()

@brief Increment the unsigned 64 bits integer counter value

@endcond */ @brief Increment the unsigned 64 bits integer counter value with x

@ingroup counters @brief Increment a counter by the value specified in delta. @param[in] domain The domain controlling the call. Counter names are not domain specific. The domain argument is used only to enable or disable the API calls. @param[in] name The name of the counter @param[in] delta The amount by which to increment the counter

@ingroup counters @brief Increment a counter by one. The first call with a given name creates a counter by that name and sets its value to zero. Successive calls increment the counter value. @param[in] domain The domain controlling the call. Counter names are not domain specific. The domain argument is used only to enable or disable the API calls. @param[in] name The name of the counter

@brief Set the counter value

@brief Set the counter value

@brief Detach collection

@brief Record an event end occurrence. @note It is optional if events do not have durations. @return __itt_err upon failure (invalid event id/user event feature not enabled)

@brief Record an event occurrence. @return __itt_err upon failure (invalid event id/user event feature not enabled)

@ingroup frames @brief Begin a frame instance. Successive calls to __itt_frame_begin with the same ID are ignored until a call to __itt_frame_end with the same ID. @param[in] domain The domain for this frame instance @param[in] id The instance ID for this frame instance or NULL

@ingroup frames @brief End a frame instance. The first call to __itt_frame_end with a given ID ends the frame. Successive calls with the same ID are ignored, as are calls that do not have a matching __itt_frame_begin call. @param[in] domain The domain for this frame instance @param[in] id The instance ID for this frame instance or NULL for current

@ingroup frames @brief Submits a frame instance. Successive calls to __itt_frame_begin or __itt_frame_submit with the same ID are ignored until a call to __itt_frame_end or __itt_frame_submit with the same ID. Passing special __itt_timestamp_none value as “end” argument means take the current timestamp as the end timestamp. @param[in] domain The domain for this frame instance @param[in] id The instance ID for this frame instance or NULL @param[in] begin Timestamp of the beginning of the frame @param[in] end Timestamp of the end of the frame

@ingroup legacy @deprecated Legacy API @brief Fast synchronization which does no require spinning.

@ingroup legacy @deprecated Legacy API @brief Fast synchronization which does no require spinning.

@name group of functions is used for correctness checking tools @ingroup legacy @deprecated Legacy API @brief Fast synchronization which does no require spinning.

@ingroup legacy @deprecated Legacy API @brief Fast synchronization which does no require spinning.

@brief function allows to obtain the current collection state at the moment @return collection state as a enum __itt_collection_state

@ingroup timestamps @brief Return timestamp corresponding to the current moment. This returns the timestamp in the format that is the most relevant for the current host or platform (RDTSC, QPC, and others). You can use the “<” operator to compare __itt_timestamp values.

@brief Record an allocation begin occurrence.

@brief Record an allocation end occurrence.

@brief Record a free begin occurrence.

@brief Record a free end occurrence.

@brief internal access begin

@brief internal access end

@brief Record a reallocation begin occurrence.

@brief Record a reallocation end occurrence.

@brief report

@brief record memory growth begin

@brief record memory growth end

@brief heap reset detection

@brief Submit statistics for a histogram instance. @param[in] hist Pointer to the histogram instance to which the histogram statistic is to be dumped. @param[in] length The number of elements in dumped axis data array. @param[in] x_data The X axis dumped data itself (may be NULL to calculate batch statistics). @param[in] y_data The Y axis dumped data itself.

@ingroup ids @brief Create an instance of identifier. This establishes the beginning of the lifetime of an instance of the given ID in the trace. Once this lifetime starts, the ID can be used to tag named entity instances in calls such as __itt_task_begin, and to specify relationships among identified named entity instances, using the \ref relations APIs. Instance IDs are not domain specific! @param[in] domain The domain controlling the execution of this call. @param[in] id The ID to create.

@ingroup clockdomain @brief Create an instance of identifier. This establishes the beginning of the lifetime of an instance of the given ID in the trace. Once this lifetime starts, the ID can be used to tag named entity instances in calls such as __itt_task_begin, and to specify relationships among identified named entity instances, using the \ref relations APIs. @param[in] domain The domain controlling the execution of this call. @param[in] clock_domain The clock domain controlling the execution of this call. @param[in] timestamp The user defined timestamp. @param[in] id The ID to create.

@ingroup ids @brief Destroy an instance of identifier. This ends the lifetime of the current instance of the given ID value in the trace. Any relationships that are established after this lifetime ends are invalid. This call must be performed before the given ID value can be reused for a different named entity instance. @param[in] domain The domain controlling the execution of this call. @param[in] id The ID to destroy.

@ingroup clockdomain @brief Destroy an instance of identifier. This ends the lifetime of the current instance of the given ID value in the trace. Any relationships that are established after this lifetime ends are invalid. This call must be performed before the given ID value can be reused for a different named entity instance. @param[in] domain The domain controlling the execution of this call. @param[in] clock_domain The clock domain controlling the execution of this call. @param[in] timestamp The user defined timestamp. @param[in] id The ID to destroy.

@brief function contains a special code pattern identified on the post-processing stage and marks the beginning of a code region targeted for Intel PT analysis @param[in] region - region id, 0 <= region < 8

@brief function contains a special code pattern identified on the post-processing stage and marks the end of a code region targeted for Intel PT analysis @param[in] region - region id, 0 <= region < 8

@ingroup markers @brief Create a marker instance @param[in] domain The domain for this marker @param[in] id The instance ID for this marker or __itt_null @param[in] name The name for this marker @param[in] scope The scope for this marker

@ingroup markers @brief Create a marker instance. @param[in] domain The domain for this marker @param[in] clock_domain The clock domain controlling the execution of this call. @param[in] timestamp The user defined timestamp. @param[in] id The instance ID for this marker, or __itt_null @param[in] name The name for this marker @param[in] scope The scope for this marker

@ingroup parameters @brief Add metadata to an instance of a named entity. @param[in] domain The domain controlling the call @param[in] id The identifier of the instance to which the metadata is to be added, or __itt_null to add to the current task @param[in] key The name of the metadata @param[in] type The type of the metadata @param[in] count The number of elements of the given type. If count == 0, no metadata will be added. @param[in] data The metadata itself

@ingroup parameters @brief Add metadata to an instance of a named entity. @param[in] domain The domain controlling the call @param[in] scope The scope of the instance to which the metadata is to be added

@brief ANNOTATE_CLEAR_USES support

@brief ANNOTATE_DISABLE_PUSH/ANNOTATE_DISABLE_POP support

@brief ANNOTATE_INDUCTION_USES support

@brief ANNOTATE_LOCK_ACQUIRE/ANNOTATE_LOCK_RELEASE support

@brief ANNOTATE_OBSERVE_USES support

@brief ANNOTATE_RECORD_ALLOCATION/ANNOTATE_RECORD_DEALLOCATION support

@brief ANNOTATE_REDUCTION_USES support

@brief ANNOTATE_SITE_BEGIN/ANNOTATE_SITE_END support.

@brief ANNOTATE_TASK_BEGIN/ANNOTATE_TASK_END support

@brief Load module content and its loaded(relocated) sections. This API is useful to save a module, or specify its location on the system and report information about loaded sections. The target module is saved on the system if module buffer content and size are available. If module buffer content and size are unavailable, the module name contains the path to the existing binary module. @param[in] module_obj - provides module and section information, along with unique module identifiers (name,module ID) which bind the binary module to particular sections.

@brief Report module unload This API is used to report necessary information in case of bypassing default system loader. Notification should be done just before the module is unloaded from process memory. @param[in] addr - base address of loaded module

@brief Unload a module and its loaded(relocated) sections. This API notifies that the module and its sections were unloaded. @param[in] module_obj - provides module and sections information, along with unique module identifiers (name,module ID) which bind the binary module to particular sections.

@defgroup control Collection Control @ingroup public General behavior: application continues to run, but no profiling information is being collected

@defgroup regions Regions @ingroup public Regions group @{ @ingroup regions @brief Begin of region instance. Successive calls to __itt_region_begin with the same ID are ignored until a call to __itt_region_end with the same ID @param[in] domain The domain for this region instance @param[in] id The instance ID for this region instance. Must not be __itt_null @param[in] parentid The instance ID for the parent of this region instance, or __itt_null @param[in] name The name of this region

@ingroup regions @brief End of region instance. The first call to __itt_region_end with a given ID ends the region. Successive calls with the same ID are ignored, as are calls that do not have a matching __itt_region_begin call. @param[in] domain The domain for this region instance @param[in] id The instance ID for this region instance

@ingroup relations @brief Add a relation between two instance identifiers. @param[in] domain The domain controlling this call @param[in] head The ID for the head of the relation @param[in] relation The kind of relation @param[in] tail The ID for the tail of the relation

@ingroup clockdomain @brief Add a relation between two instance identifiers. @param[in] domain The domain controlling this call @param[in] clock_domain The clock domain controlling the execution of this call. @param[in] timestamp The user defined timestamp. @param[in] head The ID for the head of the relation @param[in] relation The kind of relation @param[in] tail The ID for the tail of the relation

@ingroup relations @brief Add a relation to the current task instance. The current task instance is the head of the relation. @param[in] domain The domain controlling this call @param[in] relation The kind of relation @param[in] tail The ID for the tail of the relation

@ingroup clockdomain @brief Add a relation to the current task instance. The current task instance is the head of the relation. @param[in] domain The domain controlling this call @param[in] clock_domain The clock domain controlling the execution of this call. @param[in] timestamp The user defined timestamp. @param[in] relation The kind of relation @param[in] tail The ID for the tail of the relation

@brief Resume collection

@brief Set the logical track.

@brief Undo the effect of a matching call to __itt_suppress_mark_range. If not matching call is found, nothing is changed.

@brief Mark a range of memory for error suppression or unsuppression for error types included in mask

@brief Undo the effects of the matching call to __itt_suppress_push

@brief Start suppressing errors identified in mask on this thread

@brief Successful spin loop completion (sync object acquired)

@brief Quit spin loop without acquiring spin object

@brief Destroy a synchronization object. @param addr Handle for the synchronization object.

@name group of functions is used for performance measurement tools @brief Enter spin loop on user-defined sync object

@brief Start sync object releasing code. Is called before the lock release call.

@ingroup tasks @brief Begin a task instance. @param[in] domain The domain for this task @param[in] taskid The instance ID for this task instance, or __itt_null @param[in] parentid The parent instance to which this task instance belongs, or __itt_null @param[in] name The name of this task

@ingroup clockdomain @brief Begin a task instance. @param[in] domain The domain for this task @param[in] clock_domain The clock domain controlling the execution of this call. @param[in] timestamp The user defined timestamp. @param[in] taskid The instance ID for this task instance, or __itt_null @param[in] parentid The parent instance to which this task instance belongs, or __itt_null @param[in] name The name of this task

@ingroup tasks @brief Begin a task instance. @param[in] domain The domain for this task @param[in] taskid The identifier for this task instance (may be 0) @param[in] parentid The parent of this task (may be 0) @param[in] fn The pointer to the function you are tracing

@ingroup clockdomain @brief Begin a task instance. @param[in] domain The domain for this task @param[in] clock_domain The clock domain controlling the execution of this call. @param[in] timestamp The user defined timestamp. @param[in] taskid The identifier for this task instance, or __itt_null @param[in] parentid The parent of this task, or __itt_null @param[in] fn The pointer to the function you are tracing

@ingroup tasks @brief Begin an overlapped task instance. @param[in] domain The domain for this task. @param[in] taskid The identifier for this task instance, cannot be __itt_null. @param[in] parentid The parent of this task, or __itt_null. @param[in] name The name of this task.

@ingroup tasks @brief End the current task instance. @param[in] domain The domain for this task

@ingroup clockdomain @brief End the current task instance. @param[in] domain The domain for this task @param[in] clock_domain The clock domain controlling the execution of this call. @param[in] timestamp The user defined timestamp.

@ingroup tasks @brief End an overlapped task instance. @param[in] domain The domain for this task @param[in] taskid Explicit ID of finished task

@defgroup taskgroup Task Group @ingroup public Task Group @{ @ingroup task_groups @brief Denotes a task_group instance. Successive calls to __itt_task_group with the same ID are ignored. @param[in] domain The domain for this task_group instance @param[in] id The instance ID for this task_group instance. Must not be __itt_null. @param[in] parentid The instance ID for the parent of this task_group instance, or __itt_null. @param[in] name The name of this task_group

@brief Mark current thread as ignored from this point on, for the duration of its existence.

@brief Create logical track.

@brief Create logical track group.

@brief Generates a new unique method ID.

@brief Returns the current mode of the agent.

@brief Reports infomation about JIT-compiled code to the agent.

Type Definitions

@brief Description of a single entry in the line number information of a code region. @details A table of line number entries gives information about how the reported code region is mapped to source file. Intel(R) VTune(TM) Amplifier uses line number information to attribute the samples (virtual address) to a line number. \n It is acceptable to report different code addresses for the same source line: @code Offset LineNumber 1 2 12 4 15 2 18 1 21 30

@cond exclude_from_documentation

@brief Placeholder for custom track types. Currently, “normal” custom track is the only available track type.

@enum __itt_av_data_type @brief Defines types of arrays data (for C/C++ intrinsic types)

@enum __itt_collection_state @brief Enumerator for collection state. All non-work states have negative values.

@brief opaque structure for counter identification

@cond exclude_from_gpa_documentation */ @defgroup events Events @ingroup public Events group @{

@cond exclude_from_documentation

@defgroup heap Heap @ingroup public Heap group @{

@ingroup parameters @brief describes the type of metadata

@enum __itt_model_disable @brief Enumerator for the disable methods

@cond exclude_from_documentation

@defgroup Intel Processor Trace control API from this group provides control over collection and analysis of Intel Processor Trace (Intel PT) data Information about Intel Processor Trace technology can be found here (Volume 3 chapter 35): https://software.intel.com/sites/default/files/managed/39/c5/325462-sdm-vol-1-2abcd-3abcd.pdf Use this API to mark particular code regions for loading detailed performance statistics. This mode makes your analysis faster and more accurate. @{

@ingroup relations @brief The kind of relation between two instances is specified by the enumerated type __itt_relation. Relations between instances can be added with an API call. The relation API uses instance IDs. Relations can be added before or after the actual instances are created and persist independently of the instances. This is the motivation for having different lifetimes for instance IDs and the actual instances.

@brief Describes the scope of an event object in the trace.

@cond exclude_from_documentation

@enum __itt_model_disable @brief Enumerator for the disable methods

@cond exclude_from_documentation

@brief Enumerator for the code architecture.

@brief Enumerator for the agent’s mode

@cond exclude_from_documentation */ @brief Description of a segment type @details Use the segment type to specify a type of data supplied with the iJVM_EVENT_TYPE_METHOD_UPDATE_V2 event to be applied to a certain code trace.

@brief Description of an inline JIT-compiled method @details When you use the_iJIT_Method_Inline_Load structure to describe the JIT compiled method, use iJVM_EVENT_TYPE_METHOD_INLINE_LOAD_FINISHED as an event type to report it.

@brief Description of a JIT-compiled method @details When you use the iJIT_Method_Load structure to describe the JIT compiled method, use iJVM_EVENT_TYPE_METHOD_LOAD_FINISHED as an event type to report it.

@brief Description of a JIT-compiled method @details When you use the iJIT_Method_Load_V2 structure to describe the JIT compiled method, use iJVM_EVENT_TYPE_METHOD_LOAD_FINISHED_V2 as an event type to report it.

@brief Description of a JIT-compiled method @details The iJIT_Method_Load_V3 structure is the same as iJIT_Method_Load_V2 with a newly introduced ‘arch’ field that specifies architecture of the code region. When you use the iJIT_Method_Load_V3 structure to describe the JIT compiled method, use iJVM_EVENT_TYPE_METHOD_LOAD_FINISHED_V3 as an event type to report it.

@brief Description of a dynamic update of the content within JIT-compiled method @details The JIT engine may generate the methods that are updated at runtime partially by mixed (data + executable code) content. When you use the iJIT_Method_Update structure to describe the update of the content within a JIT-compiled method, use iJVM_EVENT_TYPE_METHOD_UPDATE_V2 as an event type to report it.

@brief Enumerator for the types of notifications

@brief Description of a single entry in the line number information of a code region. @details A table of line number entries gives information about how the reported code region is mapped to source file. Intel(R) VTune(TM) Amplifier uses line number information to attribute the samples (virtual address) to a line number. \n It is acceptable to report different code addresses for the same source line: @code Offset LineNumber 1 2 12 4 15 2 18 1 21 30

@brief Description of an inline JIT-compiled method @details When you use the_iJIT_Method_Inline_Load structure to describe the JIT compiled method, use iJVM_EVENT_TYPE_METHOD_INLINE_LOAD_FINISHED as an event type to report it.

@brief Description of a JIT-compiled method @details When you use the iJIT_Method_Load structure to describe the JIT compiled method, use iJVM_EVENT_TYPE_METHOD_LOAD_FINISHED as an event type to report it.

@brief Description of a JIT-compiled method @details When you use the iJIT_Method_Load_V2 structure to describe the JIT compiled method, use iJVM_EVENT_TYPE_METHOD_LOAD_FINISHED_V2 as an event type to report it.

@brief Description of a JIT-compiled method @details The iJIT_Method_Load_V3 structure is the same as iJIT_Method_Load_V2 with a newly introduced ‘arch’ field that specifies architecture of the code region. When you use the iJIT_Method_Load_V3 structure to describe the JIT compiled method, use iJVM_EVENT_TYPE_METHOD_LOAD_FINISHED_V3 as an event type to report it.

@brief Description of a dynamic update of the content within JIT-compiled method @details The JIT engine may generate the methods that are updated at runtime partially by mixed (data + executable code) content. When you use the iJIT_Method_Update structure to describe the update of the content within a JIT-compiled method, use iJVM_EVENT_TYPE_METHOD_UPDATE_V2 as an event type to report it.